/**
 * vue-router v2.7.0
 * (c) 2017 Evan You
 * @license MIT
 */
! function(t, e) {
	"object" == typeof exports && "undefined" != typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define(e) : t.VueRouter = e()
}(this, function() {
	"use strict";

	function t(t, e) {}

	function e(t) {
		return Object.prototype.toString.call(t).indexOf("Error") > -1
	}

	function r(t, e) {
		switch(typeof e) {
			case "undefined":
				return;
			case "object":
				return e;
			case "function":
				return e(t);
			case "boolean":
				return e ? t.params : void 0
		}
	}

	function n(t, e, r) {
		void 0 === e && (e = {});
		var n, i = r || o;
		try {
			n = i(t || "")
		} catch(t) {
			n = {}
		}
		for(var a in e) {
			var u = e[a];
			n[a] = Array.isArray(u) ? u.slice() : u
		}
		return n
	}

	function o(t) {
		var e = {};
		return(t = t.trim().replace(/^(\?|#|&)/, "")) ? (t.split("&").forEach(function(t) {
			var r = t.replace(/\+/g, " ").split("="),
				n = $t(r.shift()),
				o = r.length > 0 ? $t(r.join("=")) : null;
			void 0 === e[n] ? e[n] = o : Array.isArray(e[n]) ? e[n].push(o) : e[n] = [e[n], o]
		}), e) : e
	}

	function i(t) {
		var e = t ? Object.keys(t).map(function(e) {
			var r = t[e];
			if(void 0 === r) return "";
			if(null === r) return Tt(e);
			if(Array.isArray(r)) {
				var n = [];
				return r.forEach(function(t) {
					void 0 !== t && (null === t ? n.push(Tt(e)) : n.push(Tt(e) + "=" + Tt(t)))
				}), n.join("&")
			}
			return Tt(e) + "=" + Tt(r)
		}).filter(function(t) {
			return t.length > 0
		}).join("&") : null;
		return e ? "?" + e : ""
	}

	function a(t, e, r, n) {
		var o = n && n.options.stringifyQuery,
			i = {
				name: e.name || t && t.name,
				meta: t && t.meta || {},
				path: e.path || "/",
				hash: e.hash || "",
				query: e.query || {},
				params: e.params || {},
				fullPath: c(e, o),
				matched: t ? u(t) : []
			};
		return r && (i.redirectedFrom = c(r, o)), Object.freeze(i)
	}

	function u(t) {
		for(var e = []; t;) e.unshift(t), t = t.parent;
		return e
	}

	function c(t, e) {
		var r = t.path,
			n = t.query;
		void 0 === n && (n = {});
		var o = t.hash;
		void 0 === o && (o = "");
		var a = e || i;
		return(r || "/") + a(n) + o
	}

	function s(t, e) {
		return e === qt ? t === e : !!e && (t.path && e.path ? t.path.replace(St, "") === e.path.replace(St, "") && t.hash === e.hash && p(t.query, e.query) : !(!t.name || !e.name) && (t.name === e.name && t.hash === e.hash && p(t.query, e.query) && p(t.params, e.params)))
	}

	function p(t, e) {
		void 0 === t && (t = {}), void 0 === e && (e = {});
		var r = Object.keys(t),
			n = Object.keys(e);
		return r.length === n.length && r.every(function(r) {
			var n = t[r],
				o = e[r];
			return "object" == typeof n && "object" == typeof o ? p(n, o) : String(n) === String(o)
		})
	}

	function f(t, e) {
		return 0 === t.path.replace(St, "/").indexOf(e.path.replace(St, "/")) && (!e.hash || t.hash === e.hash) && h(t.query, e.query)
	}

	function h(t, e) {
		for(var r in e)
			if(!(r in t)) return !1;
		return !0
	}

	function l(t) {
		if(!(t.metaKey || t.altKey || t.ctrlKey || t.shiftKey || t.defaultPrevented || void 0 !== t.button && 0 !== t.button)) {
			if(t.currentTarget && t.currentTarget.getAttribute) {
				var e = t.currentTarget.getAttribute("target");
				if(/\b_blank\b/i.test(e)) return
			}
			return t.preventDefault && t.preventDefault(), !0
		}
	}

	function d(t) {
		if(t)
			for(var e, r = 0; r < t.length; r++) {
				if("a" === (e = t[r]).tag) return e;
				if(e.children && (e = d(e.children))) return e
			}
	}

	function y(t) {
		if(!y.installed) {
			y.installed = !0, Ot = t;
			var e = function(t) {
					return void 0 !== t
				},
				r = function(t, r) {
					var n = t.$options._parentVnode;
					e(n) && e(n = n.data) && e(n = n.registerRouteInstance) && n(t, r)
				};
			t.mixin({
				beforeCreate: function() {
					e(this.$options.router) ? (this._routerRoot = this, this._router = this.$options.router, this._router.init(this), t.util.defineReactive(this, "_route", this._router.history.current)) : this._routerRoot = this.$parent && this.$parent._routerRoot || this, r(this, this)
				},
				destroyed: function() {
					r(this)
				}
			}), Object.defineProperty(t.prototype, "$router", {
				get: function() {
					return this._routerRoot._router
				}
			}), Object.defineProperty(t.prototype, "$route", {
				get: function() {
					return this._routerRoot._route
				}
			}), t.component("router-view", Ct), t.component("router-link", Ut);
			var n = t.config.optionMergeStrategies;
			n.beforeRouteEnter = n.beforeRouteLeave = n.beforeRouteUpdate = n.created
		}
	}

	function v(t, e, r) {
		var n = t.charAt(0);
		if("/" === n) return t;
		if("?" === n || "#" === n) return e + t;
		var o = e.split("/");
		r && o[o.length - 1] || o.pop();
		for(var i = t.replace(/^\//, "").split("/"), a = 0; a < i.length; a++) {
			var u = i[a];
			".." === u ? o.pop() : "." !== u && o.push(u)
		}
		return "" !== o[0] && o.unshift(""), o.join("/")
	}

	function m(t) {
		var e = "",
			r = "",
			n = t.indexOf("#");
		n >= 0 && (e = t.slice(n), t = t.slice(0, n));
		var o = t.indexOf("?");
		return o >= 0 && (r = t.slice(o + 1), t = t.slice(0, o)), {
			path: t,
			query: r,
			hash: e
		}
	}

	function g(t) {
		return t.replace(/\/\//g, "/")
	}

	function b(t, e) {
		for(var r, n = [], o = 0, i = 0, a = "", u = e && e.delimiter || "/"; null != (r = Ft.exec(t));) {
			var c = r[0],
				s = r[1],
				p = r.index;
			if(a += t.slice(i, p), i = p + c.length, s) a += s[1];
			else {
				var f = t[i],
					h = r[2],
					l = r[3],
					d = r[4],
					y = r[5],
					v = r[6],
					m = r[7];
				a && (n.push(a), a = "");
				var g = null != h && null != f && f !== h,
					b = "+" === v || "*" === v,
					w = "?" === v || "*" === v,
					x = r[2] || u,
					k = d || y;
				n.push({
					name: l || o++,
					prefix: h || "",
					delimiter: x,
					optional: w,
					repeat: b,
					partial: g,
					asterisk: !!m,
					pattern: k ? E(k) : m ? ".*" : "[^" + R(x) + "]+?"
				})
			}
		}
		return i < t.length && (a += t.substr(i)), a && n.push(a), n
	}

	function w(t) {
		return encodeURI(t).replace(/[\/?#]/g, function(t) {
			return "%" + t.charCodeAt(0).toString(16).toUpperCase()
		})
	}

	function x(t) {
		return encodeURI(t).replace(/[?#]/g, function(t) {
			return "%" + t.charCodeAt(0).toString(16).toUpperCase()
		})
	}

	function k(t) {
		for(var e = new Array(t.length), r = 0; r < t.length; r++) "object" == typeof t[r] && (e[r] = new RegExp("^(?:" + t[r].pattern + ")$"));
		return function(r, n) {
			for(var o = "", i = r || {}, a = (n || {}).pretty ? w : encodeURIComponent, u = 0; u < t.length; u++) {
				var c = t[u];
				if("string" != typeof c) {
					var s, p = i[c.name];
					if(null == p) {
						if(c.optional) {
							c.partial && (o += c.prefix);
							continue
						}
						throw new TypeError('Expected "' + c.name + '" to be defined')
					}
					if(It(p)) {
						if(!c.repeat) throw new TypeError('Expected "' + c.name + '" to not repeat, but received `' + JSON.stringify(p) + "`");
						if(0 === p.length) {
							if(c.optional) continue;
							throw new TypeError('Expected "' + c.name + '" to not be empty')
						}
						for(var f = 0; f < p.length; f++) {
							if(s = a(p[f]), !e[u].test(s)) throw new TypeError('Expected all "' + c.name + '" to match "' + c.pattern + '", but received `' + JSON.stringify(s) + "`");
							o += (0 === f ? c.prefix : c.delimiter) + s
						}
					} else {
						if(s = c.asterisk ? x(p) : a(p), !e[u].test(s)) throw new TypeError('Expected "' + c.name + '" to match "' + c.pattern + '", but received "' + s + '"');
						o += c.prefix + s
					}
				} else o += c
			}
			return o
		}
	}

	function R(t) {
		return t.replace(/([.+*?=^!:${}()[\]|\/\\])/g, "\\$1")
	}

	function E(t) {
		return t.replace(/([=!:$\/()])/g, "\\$1")
	}

	function O(t, e) {
		return t.keys = e, t
	}

	function C(t) {
		return t.sensitive ? "" : "i"
	}

	function A(t, e) {
		var r = t.source.match(/\((?!\?)/g);
		if(r)
			for(var n = 0; n < r.length; n++) e.push({
				name: n,
				prefix: null,
				delimiter: null,
				optional: !1,
				repeat: !1,
				partial: !1,
				asterisk: !1,
				pattern: null
			});
		return O(t, e)
	}

	function j(t, e, r) {
		for(var n = [], o = 0; o < t.length; o++) n.push($(t[o], e, r).source);
		return O(new RegExp("(?:" + n.join("|") + ")", C(r)), e)
	}

	function _(t, e, r) {
		return T(b(t, r), e, r)
	}

	function T(t, e, r) {
		It(e) || (r = e || r, e = []);
		for(var n = (r = r || {}).strict, o = !1 !== r.end, i = "", a = 0; a < t.length; a++) {
			var u = t[a];
			if("string" == typeof u) i += R(u);
			else {
				var c = R(u.prefix),
					s = "(?:" + u.pattern + ")";
				e.push(u), u.repeat && (s += "(?:" + c + s + ")*"), i += s = u.optional ? u.partial ? c + "(" + s + ")?" : "(?:" + c + "(" + s + "))?" : c + "(" + s + ")"
			}
		}
		var p = R(r.delimiter || "/"),
			f = i.slice(-p.length) === p;
		return n || (i = (f ? i.slice(0, -p.length) : i) + "(?:" + p + "(?=$))?"), i += o ? "$" : n && f ? "" : "(?=" + p + "|$)", O(new RegExp("^" + i, C(r)), e)
	}

	function $(t, e, r) {
		return It(e) || (r = e || r, e = []), r = r || {}, t instanceof RegExp ? A(t, e) : It(t) ? j(t, e, r) : _(t, e, r)
	}

	function S(t, e, r) {
		try {
			return(Dt[t] || (Dt[t] = Mt.compile(t)))(e || {}, {
				pretty: !0
			})
		} catch(t) {
			return ""
		}
	}

	function q(t, e, r, n) {
		var o = e || [],
			i = r || Object.create(null),
			a = n || Object.create(null);
		t.forEach(function(t) {
			L(o, i, a, t)
		});
		for(var u = 0, c = o.length; u < c; u++) "*" === o[u] && (o.push(o.splice(u, 1)[0]), c--, u--);
		return {
			pathList: o,
			pathMap: i,
			nameMap: a
		}
	}

	function L(t, e, r, n, o, i) {
		var a = n.path,
			u = n.name,
			c = U(a, o),
			s = n.pathToRegexpOptions || {};
		"boolean" == typeof n.caseSensitive && (s.sensitive = n.caseSensitive);
		var p = {
			path: c,
			regex: P(c, s),
			components: n.components || {
				default: n.component
			},
			instances: {},
			name: u,
			parent: o,
			matchAs: i,
			redirect: n.redirect,
			beforeEnter: n.beforeEnter,
			meta: n.meta || {},
			props: null == n.props ? {} : n.components ? n.props : {
				default: n.props
			}
		};
		n.children && n.children.forEach(function(n) {
			var o = i ? g(i + "/" + n.path) : void 0;
			L(t, e, r, n, p, o)
		}), void 0 !== n.alias && (Array.isArray(n.alias) ? n.alias : [n.alias]).forEach(function(i) {
			var a = {
				path: i,
				children: n.children
			};
			L(t, e, r, a, o, p.path || "/")
		}), e[p.path] || (t.push(p.path), e[p.path] = p), u && (r[u] || (r[u] = p))
	}

	function P(t, e) {
		return Mt(t, [], e)
	}

	function U(t, e) {
		return t = t.replace(/\/$/, ""), "/" === t[0] ? t : null == e ? t : g(e.path + "/" + t)
	}

	function H(t, e, r, o) {
		var i = "string" == typeof t ? {
			path: t
		} : t;
		if(i.name || i._normalized) return i;
		if(!i.path && i.params && e) {
			(i = I({}, i))._normalized = !0;
			var a = I(I({}, e.params), i.params);
			if(e.name) i.name = e.name, i.params = a;
			else if(e.matched.length) {
				var u = e.matched[e.matched.length - 1].path;
				i.path = S(u, a, "path " + e.path)
			}
			return i
		}
		var c = m(i.path || ""),
			s = e && e.path || "/",
			p = c.path ? v(c.path, s, r || i.append) : s,
			f = n(c.query, i.query, o && o.options.parseQuery),
			h = i.hash || c.hash;
		return h && "#" !== h.charAt(0) && (h = "#" + h), {
			_normalized: !0,
			path: p,
			query: f,
			hash: h
		}
	}

	function I(t, e) {
		for(var r in e) t[r] = e[r];
		return t
	}

	function M(t, e) {
		function r(t, r, n) {
			var o = H(t, r, !1, e),
				a = o.name;
			if(a) {
				var u = p[a];
				if(!u) return i(null, o);
				var f = u.regex.keys.filter(function(t) {
					return !t.optional
				}).map(function(t) {
					return t.name
				});
				if("object" != typeof o.params && (o.params = {}), r && "object" == typeof r.params)
					for(var h in r.params) !(h in o.params) && f.indexOf(h) > -1 && (o.params[h] = r.params[h]);
				if(u) return o.path = S(u.path, o.params, 'named route "' + a + '"'), i(u, o, n)
			} else if(o.path) {
				o.params = {};
				for(var l = 0; l < c.length; l++) {
					var d = c[l],
						y = s[d];
					if(V(y.regex, o.path, o.params)) return i(y, o, n)
				}
			}
			return i(null, o)
		}

		function n(t, n) {
			var o = t.redirect,
				u = "function" == typeof o ? o(a(t, n, null, e)) : o;
			if("string" == typeof u && (u = {
					path: u
				}), !u || "object" != typeof u) return i(null, n);
			var c = u,
				s = c.name,
				f = c.path,
				h = n.query,
				l = n.hash,
				d = n.params;
			if(h = c.hasOwnProperty("query") ? c.query : h, l = c.hasOwnProperty("hash") ? c.hash : l, d = c.hasOwnProperty("params") ? c.params : d, s) {
				p[s];
				return r({
					_normalized: !0,
					name: s,
					query: h,
					hash: l,
					params: d
				}, void 0, n)
			}
			if(f) {
				var y = z(f, t);
				return r({
					_normalized: !0,
					path: S(y, d, 'redirect route with path "' + y + '"'),
					query: h,
					hash: l
				}, void 0, n)
			}
			return i(null, n)
		}

		function o(t, e, n) {
			var o = r({
				_normalized: !0,
				path: S(n, e.params, 'aliased route with path "' + n + '"')
			});
			if(o) {
				var a = o.matched,
					u = a[a.length - 1];
				return e.params = o.params, i(u, e)
			}
			return i(null, e)
		}

		function i(t, r, i) {
			return t && t.redirect ? n(t, i || r) : t && t.matchAs ? o(t, r, t.matchAs) : a(t, r, i, e)
		}
		var u = q(t),
			c = u.pathList,
			s = u.pathMap,
			p = u.nameMap;
		return {
			match: r,
			addRoutes: function(t) {
				q(t, c, s, p)
			}
		}
	}

	function V(t, e, r) {
		var n = e.match(t);
		if(!n) return !1;
		if(!r) return !0;
		for(var o = 1, i = n.length; o < i; ++o) {
			var a = t.keys[o - 1],
				u = "string" == typeof n[o] ? decodeURIComponent(n[o]) : n[o];
			a && (r[a.name] = u)
		}
		return !0
	}

	function z(t, e) {
		return v(t, e.parent ? e.parent.path : "/", !0)
	}

	function B() {
		window.addEventListener("popstate", function(t) {
			D(), t.state && t.state.key && Z(t.state.key)
		})
	}

	function F(t, e, r, n) {
		if(t.app) {
			var o = t.options.scrollBehavior;
			o && t.app.$nextTick(function() {
				var t = K(),
					i = o(e, r, n ? t : null);
				if(i) {
					var a = "object" == typeof i;
					if(a && "string" == typeof i.selector) {
						var u = document.querySelector(i.selector);
						if(u) {
							var c = i.offset && "object" == typeof i.offset ? i.offset : {};
							t = J(u, c = X(c))
						} else N(i) && (t = Q(i))
					} else a && N(i) && (t = Q(i));
					t && window.scrollTo(t.x, t.y)
				}
			})
		}
	}

	function D() {
		var t = G();
		t && (Kt[t] = {
			x: window.pageXOffset,
			y: window.pageYOffset
		})
	}

	function K() {
		var t = G();
		if(t) return Kt[t]
	}

	function J(t, e) {
		var r = document.documentElement.getBoundingClientRect(),
			n = t.getBoundingClientRect();
		return {
			x: n.left - r.left - e.x,
			y: n.top - r.top - e.y
		}
	}

	function N(t) {
		return Y(t.x) || Y(t.y)
	}

	function Q(t) {
		return {
			x: Y(t.x) ? t.x : window.pageXOffset,
			y: Y(t.y) ? t.y : window.pageYOffset
		}
	}

	function X(t) {
		return {
			x: Y(t.x) ? t.x : 0,
			y: Y(t.y) ? t.y : 0
		}
	}

	function Y(t) {
		return "number" == typeof t
	}

	function W() {
		return Nt.now().toFixed(3)
	}

	function G() {
		return Qt
	}

	function Z(t) {
		Qt = t
	}

	function tt(t, e) {
		D();
		var r = window.history;
		try {
			e ? r.replaceState({
				key: Qt
			}, "", t) : (Qt = W(), r.pushState({
				key: Qt
			}, "", t))
		} catch(r) {
			window.location[e ? "replace" : "assign"](t)
		}
	}

	function et(t) {
		tt(t, !0)
	}

	function rt(t, e, r) {
		var n = function(o) {
			o >= t.length ? r() : t[o] ? e(t[o], function() {
				n(o + 1)
			}) : n(o + 1)
		};
		n(0)
	}

	function nt(t) {
		return function(r, n, o) {
			var i = !1,
				a = 0,
				u = null;
			ot(t, function(t, r, n, c) {
				if("function" == typeof t && void 0 === t.cid) {
					i = !0, a++;
					var s, p = at(function(e) {
							e.__esModule && e.default && (e = e.default), t.resolved = "function" == typeof e ? e : Ot.extend(e), n.components[c] = e, --a <= 0 && o()
						}),
						f = at(function(t) {
							var r = "Failed to resolve async component " + c + ": " + t;
							u || (u = e(t) ? t : new Error(r), o(u))
						});
					try {
						s = t(p, f)
					} catch(t) {
						f(t)
					}
					if(s)
						if("function" == typeof s.then) s.then(p, f);
						else {
							var h = s.component;
							h && "function" == typeof h.then && h.then(p, f)
						}
				}
			}), i || o()
		}
	}

	function ot(t, e) {
		return it(t.map(function(t) {
			return Object.keys(t.components).map(function(r) {
				return e(t.components[r], t.instances[r], t, r)
			})
		}))
	}

	function it(t) {
		return Array.prototype.concat.apply([], t)
	}

	function at(t) {
		var e = !1;
		return function() {
			for(var r = [], n = arguments.length; n--;) r[n] = arguments[n];
			if(!e) return e = !0, t.apply(this, r)
		}
	}

	function ut(t) {
		if(!t)
			if(Ht) {
				var e = document.querySelector("base");
				t = (t = e && e.getAttribute("href") || "/").replace(/^https?:\/\/[^\/]+/, "")
			} else t = "/";
		return "/" !== t.charAt(0) && (t = "/" + t), t.replace(/\/$/, "")
	}

	function ct(t, e) {
		var r, n = Math.max(t.length, e.length);
		for(r = 0; r < n && t[r] === e[r]; r++);
		return {
			updated: e.slice(0, r),
			activated: e.slice(r),
			deactivated: t.slice(r)
		}
	}

	function st(t, e, r, n) {
		var o = ot(t, function(t, n, o, i) {
			var a = pt(t, e);
			if(a) return Array.isArray(a) ? a.map(function(t) {
				return r(t, n, o, i)
			}) : r(a, n, o, i)
		});
		return it(n ? o.reverse() : o)
	}

	function pt(t, e) {
		return "function" != typeof t && (t = Ot.extend(t)), t.options[e]
	}

	function ft(t) {
		return st(t, "beforeRouteLeave", lt, !0)
	}

	function ht(t) {
		return st(t, "beforeRouteUpdate", lt)
	}

	function lt(t, e) {
		if(e) return function() {
			return t.apply(e, arguments)
		}
	}

	function dt(t, e, r) {
		return st(t, "beforeRouteEnter", function(t, n, o, i) {
			return yt(t, o, i, e, r)
		})
	}

	function yt(t, e, r, n, o) {
		return function(i, a, u) {
			return t(i, a, function(t) {
				u(t), "function" == typeof t && n.push(function() {
					vt(t, e.instances, r, o)
				})
			})
		}
	}

	function vt(t, e, r, n) {
		e[r] ? t(e[r]) : n() && setTimeout(function() {
			vt(t, e, r, n)
		}, 16)
	}

	function mt(t) {
		var e = window.location.pathname;
		return t && 0 === e.indexOf(t) && (e = e.slice(t.length)), (e || "/") + window.location.search + window.location.hash
	}

	function gt(t) {
		var e = mt(t);
		if(!/^\/#/.test(e)) return window.location.replace(g(t + "/#" + e)), !0
	}

	function bt() {
		var t = wt();
		return "/" === t.charAt(0) || (kt("/" + t), !1)
	}

	function wt() {
		var t = window.location.href,
			e = t.indexOf("#");
		return -1 === e ? "" : t.slice(e + 1)
	}

	function xt(t) {
		window.location.hash = t
	}

	function kt(t) {
		var e = window.location.href,
			r = e.indexOf("#"),
			n = r >= 0 ? e.slice(0, r) : e;
		window.location.replace(n + "#" + t)
	}

	function Rt(t, e) {
		return t.push(e),
			function() {
				var r = t.indexOf(e);
				r > -1 && t.splice(r, 1)
			}
	}

	function Et(t, e, r) {
		var n = "hash" === r ? "#" + e : e;
		return t ? g(t + "/" + n) : n
	}
	var Ot, Ct = {
			name: "router-view",
			functional: !0,
			props: {
				name: {
					type: String,
					default: "default"
				}
			},
			render: function(t, e) {
				var n = e.props,
					o = e.children,
					i = e.parent,
					a = e.data;
				a.routerView = !0;
				for(var u = i.$createElement, c = n.name, s = i.$route, p = i._routerViewCache || (i._routerViewCache = {}), f = 0, h = !1; i && i._routerRoot !== i;) i.$vnode && i.$vnode.data.routerView && f++, i._inactive && (h = !0), i = i.$parent;
				if(a.routerViewDepth = f, h) return u(p[c], a, o);
				var l = s.matched[f];
				if(!l) return p[c] = null, u();
				var d = p[c] = l.components[c];
				return a.registerRouteInstance = function(t, e) {
					var r = l.instances[c];
					(e && r !== t || !e && r === t) && (l.instances[c] = e)
				}, (a.hook || (a.hook = {})).prepatch = function(t, e) {
					l.instances[c] = e.componentInstance
				}, a.props = r(s, l.props && l.props[c]), u(d, a, o)
			}
		},
		At = /[!'()*]/g,
		jt = function(t) {
			return "%" + t.charCodeAt(0).toString(16)
		},
		_t = /%2C/g,
		Tt = function(t) {
			return encodeURIComponent(t).replace(At, jt).replace(_t, ",")
		},
		$t = decodeURIComponent,
		St = /\/?$/,
		qt = a(null, {
			path: "/"
		}),
		Lt = [String, Object],
		Pt = [String, Array],
		Ut = {
			name: "router-link",
			props: {
				to: {
					type: Lt,
					required: !0
				},
				tag: {
					type: String,
					default: "a"
				},
				exact: Boolean,
				append: Boolean,
				replace: Boolean,
				activeClass: String,
				exactActiveClass: String,
				event: {
					type: Pt,
					default: "click"
				}
			},
			render: function(t) {
				var e = this,
					r = this.$router,
					n = this.$route,
					o = r.resolve(this.to, n, this.append),
					i = o.location,
					u = o.route,
					c = o.href,
					p = {},
					h = r.options.linkActiveClass,
					y = r.options.linkExactActiveClass,
					v = null == h ? "router-link-active" : h,
					m = null == y ? "router-link-exact-active" : y,
					g = null == this.activeClass ? v : this.activeClass,
					b = null == this.exactActiveClass ? m : this.exactActiveClass,
					w = i.path ? a(null, i, null, r) : u;
				p[b] = s(n, w), p[g] = this.exact ? p[b] : f(n, w);
				var x = function(t) {
						l(t) && (e.replace ? r.replace(i) : r.push(i))
					},
					k = {
						click: l
					};
				Array.isArray(this.event) ? this.event.forEach(function(t) {
					k[t] = x
				}) : k[this.event] = x;
				var R = {
					class: p
				};
				if("a" === this.tag) R.on = k, R.attrs = {
					href: c
				};
				else {
					var E = d(this.$slots.default);
					if(E) {
						E.isStatic = !1;
						var O = Ot.util.extend;
						(E.data = O({}, E.data)).on = k, (E.data.attrs = O({}, E.data.attrs)).href = c
					} else R.on = k
				}
				return t(this.tag, R, this.$slots.default)
			}
		},
		Ht = "undefined" != typeof window,
		It = Array.isArray || function(t) {
			return "[object Array]" == Object.prototype.toString.call(t)
		},
		Mt = $,
		Vt = b,
		zt = k,
		Bt = T,
		Ft = new RegExp(["(\\\\.)", "([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"), "g");
	Mt.parse = Vt, Mt.compile = function(t, e) {
		return k(b(t, e))
	}, Mt.tokensToFunction = zt, Mt.tokensToRegExp = Bt;
	var Dt = Object.create(null),
		Kt = Object.create(null),
		Jt = Ht && function() {
			var t = window.navigator.userAgent;
			return(-1 === t.indexOf("Android 2.") && -1 === t.indexOf("Android 4.0") || -1 === t.indexOf("Mobile Safari") || -1 !== t.indexOf("Chrome") || -1 !== t.indexOf("Windows Phone")) && (window.history && "pushState" in window.history)
		}(),
		Nt = Ht && window.performance && window.performance.now ? window.performance : Date,
		Qt = W(),
		Xt = function(t, e) {
			this.router = t, this.base = ut(e), this.current = qt, this.pending = null, this.ready = !1, this.readyCbs = [], this.readyErrorCbs = [], this.errorCbs = []
		};
	Xt.prototype.listen = function(t) {
		this.cb = t
	}, Xt.prototype.onReady = function(t, e) {
		this.ready ? t() : (this.readyCbs.push(t), e && this.readyErrorCbs.push(e))
	}, Xt.prototype.onError = function(t) {
		this.errorCbs.push(t)
	}, Xt.prototype.transitionTo = function(t, e, r) {
		var n = this,
			o = this.router.match(t, this.current);
		this.confirmTransition(o, function() {
			n.updateRoute(o), e && e(o), n.ensureURL(), n.ready || (n.ready = !0, n.readyCbs.forEach(function(t) {
				t(o)
			}))
		}, function(t) {
			r && r(t), t && !n.ready && (n.ready = !0, n.readyErrorCbs.forEach(function(e) {
				e(t)
			}))
		})
	}, Xt.prototype.confirmTransition = function(r, n, o) {
		var i = this,
			a = this.current,
			u = function(r) {
				e(r) && (i.errorCbs.length ? i.errorCbs.forEach(function(t) {
					t(r)
				}) : (t(!1, "uncaught error during route navigation:"), console.error(r))), o && o(r)
			};
		if(s(r, a) && r.matched.length === a.matched.length) return this.ensureURL(), u();
		var c = ct(this.current.matched, r.matched),
			p = c.updated,
			f = c.deactivated,
			h = c.activated,
			l = [].concat(ft(f), this.router.beforeHooks, ht(p), h.map(function(t) {
				return t.beforeEnter
			}), nt(h));
		this.pending = r;
		var d = function(t, n) {
			if(i.pending !== r) return u();
			try {
				t(r, a, function(t) {
					!1 === t || e(t) ? (i.ensureURL(!0), u(t)) : "string" == typeof t || "object" == typeof t && ("string" == typeof t.path || "string" == typeof t.name) ? (u(), "object" == typeof t && t.replace ? i.replace(t) : i.push(t)) : n(t)
				})
			} catch(t) {
				u(t)
			}
		};
		rt(l, d, function() {
			var t = [];
			rt(dt(h, t, function() {
				return i.current === r
			}).concat(i.router.resolveHooks), d, function() {
				if(i.pending !== r) return u();
				i.pending = null, n(r), i.router.app && i.router.app.$nextTick(function() {
					t.forEach(function(t) {
						t()
					})
				})
			})
		})
	}, Xt.prototype.updateRoute = function(t) {
		var e = this.current;
		this.current = t, this.cb && this.cb(t), this.router.afterHooks.forEach(function(r) {
			r && r(t, e)
		})
	};
	var Yt = function(t) {
			function e(e, r) {
				var n = this;
				t.call(this, e, r);
				var o = e.options.scrollBehavior;
				o && B(), window.addEventListener("popstate", function(t) {
					var r = n.current;
					n.transitionTo(mt(n.base), function(t) {
						o && F(e, t, r, !0)
					})
				})
			}
			return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.go = function(t) {
				window.history.go(t)
			}, e.prototype.push = function(t, e, r) {
				var n = this,
					o = this.current;
				this.transitionTo(t, function(t) {
					tt(g(n.base + t.fullPath)), F(n.router, t, o, !1), e && e(t)
				}, r)
			}, e.prototype.replace = function(t, e, r) {
				var n = this,
					o = this.current;
				this.transitionTo(t, function(t) {
					et(g(n.base + t.fullPath)), F(n.router, t, o, !1), e && e(t)
				}, r)
			}, e.prototype.ensureURL = function(t) {
				if(mt(this.base) !== this.current.fullPath) {
					var e = g(this.base + this.current.fullPath);
					t ? tt(e) : et(e)
				}
			}, e.prototype.getCurrentLocation = function() {
				return mt(this.base)
			}, e
		}(Xt),
		Wt = function(t) {
			function e(e, r, n) {
				t.call(this, e, r), n && gt(this.base) || bt()
			}
			return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.setupListeners = function() {
				var t = this;
				window.addEventListener("hashchange", function() {
					bt() && t.transitionTo(wt(), function(t) {
						kt(t.fullPath)
					})
				})
			}, e.prototype.push = function(t, e, r) {
				this.transitionTo(t, function(t) {
					xt(t.fullPath), e && e(t)
				}, r)
			}, e.prototype.replace = function(t, e, r) {
				this.transitionTo(t, function(t) {
					kt(t.fullPath), e && e(t)
				}, r)
			}, e.prototype.go = function(t) {
				window.history.go(t)
			}, e.prototype.ensureURL = function(t) {
				var e = this.current.fullPath;
				wt() !== e && (t ? xt(e) : kt(e))
			}, e.prototype.getCurrentLocation = function() {
				return wt()
			}, e
		}(Xt),
		Gt = function(t) {
			function e(e, r) {
				t.call(this, e, r), this.stack = [], this.index = -1
			}
			return t && (e.__proto__ = t), e.prototype = Object.create(t && t.prototype), e.prototype.constructor = e, e.prototype.push = function(t, e, r) {
				var n = this;
				this.transitionTo(t, function(t) {
					n.stack = n.stack.slice(0, n.index + 1).concat(t), n.index++, e && e(t)
				}, r)
			}, e.prototype.replace = function(t, e, r) {
				var n = this;
				this.transitionTo(t, function(t) {
					n.stack = n.stack.slice(0, n.index).concat(t), e && e(t)
				}, r)
			}, e.prototype.go = function(t) {
				var e = this,
					r = this.index + t;
				if(!(r < 0 || r >= this.stack.length)) {
					var n = this.stack[r];
					this.confirmTransition(n, function() {
						e.index = r, e.updateRoute(n)
					})
				}
			}, e.prototype.getCurrentLocation = function() {
				var t = this.stack[this.stack.length - 1];
				return t ? t.fullPath : "/"
			}, e.prototype.ensureURL = function() {}, e
		}(Xt),
		Zt = function(t) {
			void 0 === t && (t = {}), this.app = null, this.apps = [], this.options = t, this.beforeHooks = [], this.resolveHooks = [], this.afterHooks = [], this.matcher = M(t.routes || [], this);
			var e = t.mode || "hash";
			switch(this.fallback = "history" === e && !Jt && !1 !== t.fallback, this.fallback && (e = "hash"), Ht || (e = "abstract"), this.mode = e, e) {
				case "history":
					this.history = new Yt(this, t.base);
					break;
				case "hash":
					this.history = new Wt(this, t.base, this.fallback);
					break;
				case "abstract":
					this.history = new Gt(this, t.base)
			}
		},
		te = {
			currentRoute: {}
		};
	return Zt.prototype.match = function(t, e, r) {
		return this.matcher.match(t, e, r)
	}, te.currentRoute.get = function() {
		return this.history && this.history.current
	}, Zt.prototype.init = function(t) {
		var e = this;
		if(this.apps.push(t), !this.app) {
			this.app = t;
			var r = this.history;
			if(r instanceof Yt) r.transitionTo(r.getCurrentLocation());
			else if(r instanceof Wt) {
				var n = function() {
					r.setupListeners()
				};
				r.transitionTo(r.getCurrentLocation(), n, n)
			}
			r.listen(function(t) {
				e.apps.forEach(function(e) {
					e._route = t
				})
			})
		}
	}, Zt.prototype.beforeEach = function(t) {
		return Rt(this.beforeHooks, t)
	}, Zt.prototype.beforeResolve = function(t) {
		return Rt(this.resolveHooks, t)
	}, Zt.prototype.afterEach = function(t) {
		return Rt(this.afterHooks, t)
	}, Zt.prototype.onReady = function(t, e) {
		this.history.onReady(t, e)
	}, Zt.prototype.onError = function(t) {
		this.history.onError(t)
	}, Zt.prototype.push = function(t, e, r) {
		this.history.push(t, e, r)
	}, Zt.prototype.replace = function(t, e, r) {
		this.history.replace(t, e, r)
	}, Zt.prototype.go = function(t) {
		this.history.go(t)
	}, Zt.prototype.back = function() {
		this.go(-1)
	}, Zt.prototype.forward = function() {
		this.go(1)
	}, Zt.prototype.getMatchedComponents = function(t) {
		var e = t ? t.matched ? t : this.resolve(t).route : this.currentRoute;
		return e ? [].concat.apply([], e.matched.map(function(t) {
			return Object.keys(t.components).map(function(e) {
				return t.components[e]
			})
		})) : []
	}, Zt.prototype.resolve = function(t, e, r) {
		var n = H(t, e || this.history.current, r, this),
			o = this.match(n, e),
			i = o.redirectedFrom || o.fullPath;
		return {
			location: n,
			route: o,
			href: Et(this.history.base, i, this.mode),
			normalizedTo: n,
			resolved: o
		}
	}, Zt.prototype.addRoutes = function(t) {
		this.matcher.addRoutes(t), this.history.current !== qt && this.history.transitionTo(this.history.getCurrentLocation())
	}, Object.defineProperties(Zt.prototype, te), Zt.install = y, Zt.version = "2.7.0", Ht && window.Vue && window.Vue.use(Zt), Zt
});